2024a 第04回:デジタルの応用
講義
https://gyazo.com/4bc8a9c898e0a183bf412983dc2baff6
本日のゴール
2進数、16進数を用いて…
「情報量」の計算が正しく出来るようになる
2進数を用いた「文字の符号化」や「データの圧縮」方法を学ぶ
前回授業の復習
2進法と16進法
突き詰めるとPCは内部処理で0と1しか扱うことができない (電圧が一定値以上か、以下か)
上記前提では「9」といった10進数の数値をそのまま扱うことができないため、あらゆるデータを0と1で表現できるようにしている
9を2進法では 1001 と分離することで、電圧の高低で表現できるようにしている
16進法は 16 = 2^4 という関係上、2進法で増える桁数を効率的に圧縮して扱えるメリットがあるため併用される
https://gyazo.com/754406b4bc9baebc83f06b4be5a615d8
それぞれの色の強さを0~256 (00~FF) で定義すれば様々な色を表現可能
余談:64bit, 512GB…
各種コンピュータ関連の数字がすべて2^n乗の値になっている背景はココ
アナログとデジタル
標本化、量子化、符号化
一定周期でデータを切り出して (標本化)
切り出した断面での値を数値に変換し (量子化)
2進数に変換する (符号化)
前回授業は「主に数字」を2進数、16進数で表現する方法
天気の例をチラだしした通り、表現したいのは当然数字だけではない
演習はこの場で解いて回答してもらいます
演習1,2,3
なぜ1バイト = 8ビット?
論拠は色々あるが、今日授業で扱うが「1文字 = 1バイト」で実質扱えるためバイト単位は都合が良い c.f. アルファベット(大文字、小文字、数字、記号併せて94文字) を表現するために充分なバイト数は7ビット
7ビット=1バイトでも良いが、余裕を持って 8ビットとすれば8=2^3で変換処理が楽になる
emojiはUnicode上どうなっているか?
🦌 は U+1F98C
「このコードは鹿の絵文字」とだけ決まっている
⇔ 絵は表示する環境次第!
シーザー暗号は極めてプログラム化しやすい
why: 文字はすべて数字で表現されているから
データ圧縮のミソは、圧縮されたデータを復元する時に区切りをどう見つけるかにある
ランレングス符合 … 解説では便宜上 3桁ずつ区切り
ハフマン符号 … 1が登場 or 3桁超えたら区切り
FAX通信での採用
zipで利用されている
余談
音声
wav → 無圧縮
wavが最も古い、はず。
waveの略なので、音の波形データをほぼ生で書き出しただけ。創意工夫なし
ファイルサイズ特大。ボイスレコーダーとかで録音した生データとかが昔こうだった
mp3 → 非可逆圧縮
「mp3プレイヤー」とすら言うくらい、音楽ファイルの代名詞になった拡張子
結構圧縮率の良い非可逆圧縮アルゴリズムを有している
wavと比較して1/5~1/10まで圧縮できる
aac → 非可逆圧縮
≒mp3、apple独自版と思えばそこまで間違ってない
flac → 可逆圧縮
alac → 可逆圧縮
オーディオオタク向けのやつ
mp3だと聞こえなかったハイハットの音や、アーティストの息遣いとかも聞こえてくるのでオタク向け
これをしっかり聞くためには出力装置であるスピーカー、イヤホンの性能も上げておかないとこんど出力装置側で音を握りつぶされるので要注意
動画ファイル
色々な拡張子がある
裏側の圧縮アルゴリズムがそれぞれ異なったりするので
つぶつぶ感のある映像が出来たり、逆に粒をつぶしてフラットな映像が出来たり
黒の表現が変わってきたり
暗い画面にうっすら何かが写っているようなシーンが多い映像に向いている圧縮アルゴリズムもあったりする
10:25~
小テスト
予告
次回はHTML, CSS (webページの作成に使えるマークアップ言語)について教えます!
簡単なwebサイトを作れるようになりましょう
タイピングテスト